home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs25.d81 / mcplex.prg / MUSICPLEX (.txt) < prev    next >
Commodore BASIC  |  2009-10-10  |  17KB  |  474 lines

  1. 10 REM"[176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]"
  2. 15 REM"[194]        'MUSICPLEX'          [194]"
  3. 20 REM"[194]    CREATED BY DAVE MUSE     [194]"
  4. 25 REM"[194]         74505,271           [194]"
  5. 30 REM"[194]FOR IMPROVED VERSIONS, WRITE [194]"
  6. 31 REM"[194] DAVE MUSE, 22443 LEEWRIGHT  [194]"
  7. 32 REM"[194]   SOUTHFIELD, MICH. 48034   [194]"
  8. 33 REM"[194]        VERSION 1            [194]"
  9. 35 REM"[194]       REVISION 4.0          [194]"
  10. 40 REM"[173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]"
  11. 45 REM INITIALIZATION
  12. 50 FORHJ=52992TO53019:READDA:POKEHJ,DA:NEXT:POKE768,0:POKE769,207:POKE808,234
  13. 90 SW$=" [186][205][175] ":TR$=" [206][205][206] ":PU$=" [186][208][186] ":T1=1:T2=1:MO$="COMPOSE":VW=1
  14. 100 POKE53281,1:PRINT"[152][147]":DIMA(599),B(99),C(99),W(3),H(3),L(3),T(599),U(599):GOSUB470
  15. 104 Q(6)=21:M(1)=17:M(2)=33:M(3)=65:M(4)=129:M(5)=19:M(6)=21
  16. 105 DIMV(30):NM=1:AP=1:RE=1:OC=4:T=50:Q(1)=17:Q(2)=33:Q(3)=65:Q(4)=129:Q(5)=19
  17. 106 GOTO6000
  18. 110 PRINT"[147]   STAND BY, PLEASE...":IFAP+NM<2THENPRINT"[147]PUSH A KEY TO BEGIN..."
  19. 112 PRINT"PUSH F5 TO RETURN TO MENU"
  20. 115 VB=FB+V(10):VR=RB+(16*V(19))
  21. 120 POKE54296,VB:POKE54295,VR:POKE54293,9:DF=V(11)
  22. 130 X=1:OO=251
  23. 140 DC=V(12):R1=(V(0)*16)+V(1):R2=(V(4)*16)+V(5):R3=(V(13)*16)+V(14)
  24. 150 POKE54277,R1:POKE54284,R2:POKE54291,R3
  25. 160 S1=(V(2)*16)+V(3):S2=(V(6)*16)+V(7):S3=(V(15)*16)+V(16)
  26. 170 POKE54278,S1:POKE54285,S2:POKE54292,S3
  27. 190 W(1)=54276:H(1)=54273:L(1)=54272
  28. 200 W(2)=54283:H(2)=54280:L(2)=54279:IFM=0THENPOKEL(2),0:L(2)=1025
  29. 210 W(3)=54290:H(3)=54287:L(3)=54286:IFM=0THENPOKEH(2),0:H(2)=1026
  30. 220 GOSUB540
  31. 230 O=V(20)*16
  32. 240 IFS$="E"THEN 280
  33. 250 IFS$="Y"THEN VF=V(18)*16
  34. 260 IFS$="N"THENSO=252:GOTO 310
  35. 270 DI=V(21)*16:SO=54294:FT=54299:POKE54290,VW:POKE54286,VF:GOTO315
  36. 280 DI=V(21)*16:SO=54294:FT=54300
  37. 300 GOTO 315
  38. 310 POKE54294,O
  39. 315 RETURN
  40. 317 REM COMPOSE MODE
  41. 320 PRINT"[147]":POKE53265,PEEK(53265)AND239:X=1
  42. 330 Z=PEEK(197):IFZ=64THEN 330
  43. 340 IFZ=0THENX=X-1:FORTT=1TO500:NEXT:GOTO 330
  44. 350 IFZ<7THEN 610
  45. 360 A(X)=Z:X=X+1
  46. 370 POKE251,C(Z):POKEL(1),C(Z):POKEL(2),C(Z)
  47. 380 POKEH(1),B(Z):POKEH(2),B(Z)+DC
  48. 390 POKEW(1),Q:POKEW(2),M:POKEW(3),VW
  49. 400 FORP=1TO500:FZ=(C(Z)+PEEK(SN))/2:POKEL(1),FZ-DF:POKEL(2),FZ+DF
  50. 410 POKESO,ABS(PEEK(FT)-DI)
  51. 420 IFP=TTHENPOKEW(3),VW-1
  52. 430 IFPEEK(197)<>ZTHEN 450
  53. 440 NEXT
  54. 450 P=1:POKEW(3),8:POKEW(3),0
  55. 460 POKEW(1),Q-1:POKEW(2),M-1:GOTO 330
  56. 465 REM NOTE TABLES
  57. 470 FORP=1TO99:B(P)=35:C(P)=35:NEXT
  58. 480 B(62)=8:B(59)=9:B(9)=9:B(8)=10:B(14)=10:B(17)=11:B(16)=12:B(22)=12
  59. 490 B(19)=13:B(25)=14:B(24)=15:B(30)=16:B(33)=17:B(32)=18:B(38)=19:B(35)=20
  60. 500 B(41)=21:B(46)=22:B(43)=24:B(49)=25:B(48)=27:B(54)=28
  61. 510 C(62)=147:C(59)=21:C(9)=159:C(8)=60:C(14)=205:C(17)=114:C(16)=32:C(22)=216
  62. 520 C(19)=156:C(25)=107:C(24)=70:C(30)=47:C(33)=37:C(32)=42:C(38)=63:C(35)=100
  63. 530 C(41)=154:C(46)=227:C(43)=63:C(49)=177:C(48)=56:C(54)=214
  64. 535 RETURN
  65. 540 POKE54275,V(8):POKE54274,7:POKE54282,V(9):POKE54281,7:POKE54289,V(17):POKE54288,7
  66. 550 POKE54287,0
  67. 560 IFVO$="Y"THEN VF=V(18)*16:POKE54290,VW:POKE54286,VF
  68. 570 SN=54299:IFVO$="N"THENSN=251
  69. 580 IFVO$="E"THENSN=54300
  70. 590 IFVO$="R"THENPOKE54287,VF
  71. 600 RETURN
  72. 605 REM CHANGES MODES AND OCTAVES
  73. 610 POKE53265,PEEK(53265)OR16
  74. 620 PRINTTAB(36);"S[157]T[157]A[157]N[157]D[157] [157]B[157]Y[157].[157].[157].[157]C[157]A[157]L[157]C[157]U[157]L[157]A[157]T[157]I[157]N[157]G"
  75. 622 IFZM$="[136]"ANDNM=-1ANDAP=-1THENNM=1:AP=1:RETURN
  76. 623 IFZM$="[136]"ANDNM=-1THENAP=-1:RETURN
  77. 625 IFZM$="[136]"ANDNM=1THENNM=-1:RETURN
  78. 630 IFZ=2THENAP=AP*-1
  79. 640 IFZ=3THENNM=NM*-1
  80. 642 IFZ=4ORZM$="[133]"THENOC=OC+1
  81. 643 IFZ=5ORZM$="[134]"THENOC=OC-1
  82. 645 FORY=1TO99
  83. 650 IFB(Y)=0THEN 690
  84. 660 IFZ=4ORZM$="[133]"THENB(Y)=B(Y)*2:C(Y)=INT(C(Y)*2)
  85. 670 IFC(Y)>255THENC(Y)=C(Y)-255:B(Y)=B(Y)+1
  86. 675 IFZM$="[134]"ORZ=5THEN680
  87. 677 GOTO690
  88. 680 K=(B(Y)AND1):B(Y)=INT(B(Y)/2):C(Y)=C(Y)+(K*255):C(Y)=INT(C(Y)/2)
  89. 690 NEXT:IFZM$="[133]"ORZM$="[134]"THENRETURN
  90. 700 IFZ=6THENPRINT"":FORP=1TO10:GETA$:NEXT:RETURN
  91. 710 IFAP=-1THEN 1410
  92. 720 IFNM=-1THENGOTO 750
  93. 730 GOTO 320
  94. 745 REM PERFORM MODE
  95. 750 A=PEEK(197):IFA=64THEN 750
  96. 760 POKE160,0:POKE161,0:POKE162,0:X=1:PRINT"[147]":POKE53265,PEEK(53265)AND239
  97. 770 IFA(X)=0THENZ=6:GOTO610
  98. 775 A=PEEK(197):IFA=64THEN 775
  99. 780 T(X)=TI:IFA<7THENZ=A:GOTO 610
  100. 790 Z=A(X):POKEOO,C(Z):POKEH(1),B(Z):POKEH(2),B(Z)+DC:POKEW(1),Q:POKEW(2),M:POKEW(3),VW
  101. 800 FZ=(C(Z)+PEEK(SN))/2:POKEL(1),FZ-DF:POKEL(2),FZ+DF:P=P+1:POKESO,ABS(PEEK(FT)-DI)
  102. 810 IFP=TTHENPOKEW(3),VW-1
  103. 820 IFPEEK(197)<>ATHENP=1:POKEW(3),8:POKEW(3),0:POKEW(1),Q-1:POKEW(2),M-1:U(X)=TI:X=X+1:GOTO770
  104. 830 GOTO 800
  105. 840 RETURN
  106. 990 REM ERROR TRAP
  107. 1000 POKE53265,PEEK(53265)OR16
  108. 1010 PRINT"[147]               CRASH!!!"
  109. 1020 PRINT"  PLEASE ALTER CONTROL SETTINGS           FOR PROPER OPERATION."
  110. 1030 FORHJ=1TO5000:NEXT:POKE198,0:GOTO6000
  111. 1400 REM PERFORMS PLAYBACK
  112. 1410 FORG=1TO10:GETA$:NEXT
  113. 1420 A=PEEK(197):IFA=64THEN 1420
  114. 1430 POKE160,0:POKE161,0:POKE162,0:X=1:PRINT"[147]":POKE53265,PEEK(53265)AND239
  115. 1440 IFT(X)=0THENZ=6:GOTO610
  116. 1445 IFTI*RE<T(X)ANDPEEK(197)>7THEN1445
  117. 1450 IFPEEK(197)<7THENZ=PEEK(197):GOTO 610
  118. 1460 Z=A(X):POKEOO,C(Z):POKEH(1),B(Z):POKEH(2),B(Z)+DC:POKEW(1),Q:POKEW(2),M:POKEW(3),VW
  119. 1470 FZ=(C(Z)+PEEK(SN))/2:POKEL(1),FZ-DF:POKEL(2),FZ+DF:P=P+1:POKESO,ABS(PEEK(FT)-DI)
  120. 1480 IFP=TTHENPOKEW(3),VW-1
  121. 1490 IFTI*RE>U(X)THENP=1:POKEW(3),8:POKEW(3),0:POKEW(1),Q-1:POKEW(2),M-1:X=X+1:GOTO1440
  122. 1500 GOTO 1470
  123. 1510 PRINTPEEK(197):GOTO 1510
  124. 1590 REM CONTROL PANEL 1
  125. 1600 GT$="[213][219][178][178][219][178][178][219][178][178][219][178][178][219][178][178][219][201]"
  126. 1610 GM$="[171][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][179]"
  127. 1620 GB$="[202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]"
  128. 1630 SC$(1)=" 0  3  6  9  12 15"
  129. 1640 SC$(2)=" 0 50 100 150  255"
  130. 1645 PRINT"[147]":POKE53281,0:POKE53280,0
  131. 1650 IFP$=PR$THEN1770
  132. 1655 PRINT"[158]";SC$(1);""
  133. 1660 PRINTGT$:AW=V(0):GOSUB2000:PRINT"[145][194]ATTACK1[194]"
  134. 1670 PRINTGM$:AW=V(1):GOSUB2000:PRINT"[145][194]DECAY1[194]"
  135. 1680 PRINTGM$:AW=V(2):GOSUB2000:PRINT"[145][194]SUSTAIN1[194]"
  136. 1690 PRINTGM$:AW=V(3):GOSUB2000:PRINT"[145][194]RELEASE1[194]"
  137. 1700 PRINTGM$:AW=V(4):GOSUB2000:PRINT"[145][194]ATTACK2[194]"
  138. 1710 PRINTGM$:AW=V(5):GOSUB2000:PRINT"[145][194]DECAY2[194]"
  139. 1720 PRINTGM$:AW=V(6):GOSUB2000:PRINT"[145][194]SUSTAIN2[194]"
  140. 1730 PRINTGM$:AW=V(7):GOSUB2000:PRINT"[145][194]RELEASE2[194]"
  141. 1740 PRINTGM$:AW=V(8):GOSUB2000:PRINT"[145][194]PULSEW1[194]"
  142. 1750 PRINTGM$:AW=V(9):GOSUB2000:PRINT"[145][194]PULSEW2[194]"
  143. 1760 PRINTGM$:AW=V(10):GOSUB2000:PRINT"[145][194]VOLUME[194]":PRINTGB$
  144. 1762 PRINT"USE F-KEYS OR JOYSTICK::H-HELP::M-MENU";
  145. 1765 IFP$=PL$THENRETURN
  146. 1770 PRINT"";:PRINTTAB(21)"[158]";SC$(1);""
  147. 1775 PRINTTAB(21);GT$
  148. 1780 PRINTTAB(21);:AW=V(11):GOSUB2000:PRINTTAB(21)"[145][194]PHASING[194]"
  149. 1790 PRINTTAB(21);GM$
  150. 1800 PRINTTAB(21);:AW=V(12):GOSUB2000:PRINTTAB(21)"[145][194]DISSONANCE[194]"
  151. 1810 PRINTTAB(21);GM$
  152. 1820 PRINTTAB(21);:AW=V(13):GOSUB2000:PRINTTAB(21)"[145][194]SPFXATTACK[194]"
  153. 1830 PRINTTAB(21);GM$
  154. 1840 PRINTTAB(21);:AW=V(14):GOSUB2000:PRINTTAB(21)"[145][194]SPFXDECAY[194]"
  155. 1850 PRINTTAB(21);GM$
  156. 1860 PRINTTAB(21);:AW=V(15):GOSUB2000:PRINTTAB(21)"[145][194]SPFXSUSTAIN[194]"
  157. 1870 PRINTTAB(21);GM$
  158. 1880 PRINTTAB(21);:AW=V(16):GOSUB2000:PRINTTAB(21)"[145][194]SPFXRELEASE[194]"
  159. 1890 PRINTTAB(21);GM$
  160. 1900 PRINTTAB(21);:AW=V(17):GOSUB2000:PRINTTAB(21)"[145][194]SPFXPULSEW[194]"
  161. 1910 PRINTTAB(21);GM$
  162. 1920 PRINTTAB(21);:AW=V(18):GOSUB2000:PRINTTAB(21)"[145][194]SPFXFREQ[194]"
  163. 1930 PRINTTAB(21);GM$
  164. 1940 PRINTTAB(21);:AW=V(19):GOSUB2000:PRINTTAB(21)"[145][194]FILTRESONANCE[194]"
  165. 1950 PRINTTAB(21);GM$
  166. 1960 PRINTTAB(21);:AW=V(20):GOSUB2000:PRINTTAB(21)"[145][194]FILTFREQ[194]"
  167. 1965 PRINTTAB(21);GM$
  168. 1970 PRINTTAB(21);:AW=V(21):GOSUB2000:PRINTTAB(21)"[145][194]FILTMODDIR[194]"
  169. 1985 PRINTTAB(21);GB$
  170. 1990 RETURN
  171. 1995 REM ARROW
  172. 2000 PRINT"[145]";:FORI=0TOAW:PRINT"";:NEXT:PRINT"[157]   [157][157][145]";"[158]^[157][194]":RETURN
  173. 2500 PL$="[159][169][146][157][223]":ES$=" [157] ":PR$="[159][223][157][146][169]"
  174. 2510 GOSUB1600:GOSUB1770
  175. 2520 PRINT"[159]";TAB(19)PL$:P$=PL$:PR=1
  176. 2525 IFPEEK(197)<8THEN2535
  177. 2530 GETZM$:JV=PEEK(56320)AND15:JF=PEEK(56320)AND16:IFJV=15ANDZM$=""THEN2530
  178. 2532 IFJFTHEN2535
  179. 2533 JV=JV+100
  180. 2535 POKE214,PR:POKE211,19:SYS58732:PRINTES$
  181. 2540 IFZM$="[133]"ORJV=14THENIFPR>1THENPR=PR-2
  182. 2550 IFZM$="[134]"ORJV=13THENIFPR<21THENPR=PR+2
  183. 2560 IFZM$="[135]"ORJV=11THENP$=PL$:IFV(PR/2)<15THENV(PR/2)=V(PR/2)+1
  184. 2570 IFZM$="[139]"ORJV=111THENP$=PL$:IFV(PR/2)>0THENV(PR/2)=V(PR/2)-1
  185. 2580 IFZM$="[140]"ORJV=107THENP$=PR$:IFV((PR/2)+11)>0THENV((PR/2)+11)=V((PR/2)+11)-1
  186. 2590 IFZM$="[136]"ORJV=7THENP$=PR$:IFV((PR/2)+11)<15THENV((PR/2)+11)=V((PR/2)+11)+1
  187. 2592 IFZM$="H"ANDP$=PL$THENPOKE56325,0:POKE56324,28:GOSUB8010:POKE56325,57:GOSUB1600:GOSUB1770
  188. 2593 IFZM$="H"ANDP$=PR$THENPOKE56325,0:POKE56324,28:GOSUB8260:POKE56325,57:GOSUB1600:GOSUB1770
  189. 2595 IFZM$="M"THEN RETURN
  190. 2600 POKE214,PR:POKE211,19:SYS58732:PRINTP$
  191. 2610 GOSUB1650:GOTO2525
  192. 4980 REM CONTROL PANEL 2
  193. 4992 PRINT"[147]"
  194. 4995 PRINT"          [213][195][195][195][195][195][195][195][195][201]               [213][195][201]"
  195. 5000 PRINT" MODE     [194]        [194] F7 TO CHANGE  [194]M[194]            [202][195][195][195][195][195][195][195][195][203]";
  196. 5005 PRINT"               [194] [194]"
  197. 5010 PRINT"              [213][195][195][195][195][201]               [194]F[194]"
  198. 5020 PRINT" PLAYBACK RATE[194]    [194] PUSH + OR -   [194]O[194]                [202][195][195][195][195][203]";
  199. 5025 PRINT"               [194]R[194]"
  200. 5030 PRINT"          [213][195][195][195][195][195][195][195][195][201]               [194] [194]"
  201. 5040 PRINT" FILTER   [194]        [194] F TO CHANGE   [194]M[194]    TYPE    [202][195][195][195][195][195][195][195][195][203]";
  202. 5045 PRINT"               [194]E[194]"
  203. 5050 PRINT"             [213][195][195][195][195][195][201]               [194]N[194]"
  204. 5060 PRINT" FILTER MODU [194]     [194] C TO CHANGE   [194]U[194]               [202][195][195][195][195][195][203]";
  205. 5065 PRINT"               [194]:[194]"
  206. 5070 PRINT"             [213][195][195][195][195][195][201]               [194]:[194]"
  207. 5080 PRINT" VIBRATO     [194]     [194] V TO CHANGE   [194]H[194]               [202][195][195][195][195][195][203]";
  208. 5085 PRINT"               [194] [194]"
  209. 5090 PRINT"        [213][195][195][195][195][195][178][195][195][195][195][201]               [194]F[194]"
  210. 5100 PRINT" VOICE 1[194]     [194]    [194] PUSH 1:PUSH Q [194]O[194]"
  211. 5110 PRINT" VOICE 2[194]     [194]    [194] PUSH 2:PUSH W [194]R[194]"
  212. 5120 PRINT"        [202][195][195][195][195][195][177][195][195][195][195][203]               [194] [194]"
  213. 5130 PRINT"               [213][195][195][195][201]               [194]H[194]"
  214. 5140 PRINT" SPFX ENVP LOOP[194]   [194] PUSH < OR >   [194]E[194]"
  215. 5150 PRINT"               [202][195][195][195][203]               [194]L[194]"
  216. 5160 PRINT"                [213][195][195][201]               [194]P[194]"
  217. 5170 PRINT" OCTAVE         [194]  [194] F1 UP:F3 DOWN [202][195][203]"
  218. 5180 PRINT"                [202][195][195][203]":GOSUB5500
  219. 5190 GET ZM$:IF ZM$=""THEN5190
  220. 5192 IFZM$="[133]"ORZM$="[134]"ORZM$="[136]"THENPRINT"[150]";:GOSUB620:PRINT"";
  221. 5195 IFZM$="H"THENPOKE56325,0:POKE56324,28:GOSUB8520:POKE56325,57
  222. 5200 IFZM$="F"THENF=F+1:IFF=4THENF=0
  223. 5210 IFZM$="+"THENRE=RE+.1
  224. 5215 IFZM$="-"THENRE=RE-.1
  225. 5220 IFZM$="."THENT=T+5
  226. 5225 IFZM$=","THENT=T-5
  227. 5230 IFZM$="1"THENQ=Q(IC):IC=IC+1:IFIC=7THENIC=0
  228. 5235 IFZM$="2"THENM=M(ID):ID=ID+1:IFID=7THENID=0
  229. 5240 IFZM$="V"THENVV=VV+1:IFVV=8THENVV=0
  230. 5245 IFZM$="Q"THENT1=T1*-1
  231. 5246 IFZM$="W"THENT2=T2*-1
  232. 5250 IFZM$="C"THENCC=CC+1:IFCC=8THENCC=0
  233. 5252 IFCC=0THENS$="N":D$=" OFF "
  234. 5254 IFCC=1THENS$="Y":VW=17
  235. 5256 IFCC=2THENS$="Y":VW=33
  236. 5258 IFCC=3THENS$="Y":VW=65
  237. 5260 IFCC=4THENS$="Y":VW=129
  238. 5262 IFCC=5THENS$="Y":VW=19
  239. 5264 IFCC=6THENS$="Y":VW=21
  240. 5266 IFCC=7THENS$="E":D$="ENVLP"
  241. 5268 IFVV=0THENVO$="N":E$=" OFF "
  242. 5270 IFVV=1THENVO$="Y":VW=17
  243. 5272 IFVV=2THENVO$="Y":VW=33
  244. 5274 IFVV=3THENVO$="Y":VW=65
  245. 5276 IFVV=4THENVO$="Y":VW=129
  246. 5277 IFVV=5THENVO$="Y":VW=19
  247. 5278 IFVV=6THENVO$="R":VW=21
  248. 5279 IFVV=7THENVO$="E":E$="ENVLP"
  249. 5280 IFVW=17THENC$=TR$
  250. 5282 IFVW=33THENC$=SW$
  251. 5284 IFVW=65THENC$=PU$
  252. 5286 IFVW=129THENC$="NOISE"
  253. 5287 IFVW=19THENC$="SYNC "
  254. 5288 IFVW=21THENC$="R MOD"
  255. 5289 IFCC>0ANDCC<7THEND$=C$
  256. 5290 IFVV>0ANDVV<7THENE$=C$
  257. 5295 IFZM$="M"THEN RETURN
  258. 5300 GOTO4995
  259. 5500 IFAP=1ANDNM=1THENMO$="COMPOSE "
  260. 5502 IFAP=1ANDNM=-1THENMO$="PERFORM "
  261. 5504 IFAP=-1ANDNM=-1THENMO$="PLAYBACK"
  262. 5510 PRINT"";MO$;""
  263. 5520 PRINT"";RE;""
  264. 5525 IFF=0THENFT$=" LOPASS ":FB=16+128
  265. 5526 IFF=1THENFT$="BANDPASS":FB=32+128
  266. 5527 IFF=2THENFT$=" HIPASS ":FB=64+128
  267. 5528 IFF=3THENFT$=" NOTCH  ":FB=64+16
  268. 5530 PRINT"";FT$;""
  269. 5540 PRINT"";OC;""
  270. 5550 PRINT"";T;""
  271. 5560 IFQ=17THENQ$=TR$
  272. 5562 IFQ=19THENQ$="SYNC "
  273. 5564 IFQ=21THENQ$="R MOD"
  274. 5566 IFQ=33THENQ$=SW$
  275. 5568 IFQ=65THENQ$=PU$
  276. 5570 IFQ=129THENQ$="NOISE"
  277. 5572 IFQ=0THENQ$=" OFF "
  278. 5575 IFT1=1THENQ$=Q$+"_[195][195][195]"
  279. 5576 IFT1=-1THENQ$=Q$+"FIL_"
  280. 5580 PRINT"";Q$;""
  281. 5590 IFM=17THENQ$=TR$
  282. 5592 IFM=19THENQ$="SYNC "
  283. 5594 IFM=21THENQ$="R MOD"
  284. 5596 IFM=33THENQ$=SW$
  285. 5598 IFM=65THENQ$=PU$
  286. 5600 IFM=129THENQ$="NOISE"
  287. 5610 IFM=0THENQ$=" OFF "
  288. 5615 IFT2=1THENQ$=Q$+"_[195][195][195]"
  289. 5616 IFT2=-1THENQ$=Q$+"FIL_"
  290. 5620 PRINT"";Q$;""
  291. 5630 PRINT"";D$;""
  292. 5640 PRINT"";E$;""
  293. 5700 IFT1=1ANDT2=1THENRB=12
  294. 5710 IFT1=-1ANDT2=1THENRB=13
  295. 5715 IFT1=1ANDT2=-1THENRB=14
  296. 5720 IFT1=-1ANDT2=-1THENRB=15
  297. 5900 RETURN
  298. 5990 REM MAIN MENU
  299. 6000 POKE808,234:POKE198,0:POKE53281,1:PRINT"[147][144]   M U S I C P L E X           V . 1 ."
  300. 6010 PRINT"[159]YOUR OPTIONS:"
  301. 6020 PRINT"     1) PARAMETER CONTROL
  302. 6030 [153]"     2) STATUS CONTROL
  303. 6040 PRINT"     3) SAVE SOUND/SONG TO DISK
  304. 6045 [153]"     4) LOAD SOUND/SONG FROM DISK
  305. 6050 PRINT"     5) ENTER ";MO$;" MODE"
  306. 6060 PRINT"     6) HELP
  307. 6065 [153]"     7) EXIT THE PROGRAM
  308. 6070 GETZM$:IFZM$=""THEN6070
  309. 6080 IFZM$="1"THENP$=PL$:GOSUB2500:GOTO6000
  310. 6090 IFZM$="2"THENZM$="":GOSUB5192:GOTO6000
  311. 6100 IFZM$="3"THENGOSUB7000:ZM$="":GOTO6000
  312. 6103 IFZM$="4"THENGOSUB7000:ZM$="":GOSUB5192:GOTO6000
  313. 6105 IFZM$="5"ANDAP+NM<2THENZM$="":PRINT"[147]":GOSUB110:GOSUB710:GOTO6000
  314. 6110 IFZM$="5"THENZM$="":GOSUB110:GOSUB320:GOTO6000
  315. 6112 IFZM$="6"THENZM$="":POKE56325,0:POKE56324,28:GOSUB7610:POKE56325,57:GOTO6000
  316. 6114 IFZM$="7"THENPOKE808,237
  317. 6115 IFZM$="7"THENPRINT"[147]TO RE-ENTER, TYPE 'CONT'":PRINT"THEN PUSH 'RETURN' WHEN";:END
  318. 6120 PRINT"  SORRY, THAT KEY DOESN'T DO ANYTHING!":FOR G=1TO 2000:NEXT
  319. 6200 GOTO6000
  320. 7000 POKE808,237:ZD$="LOAD":IF ZM$="3"THEN ZD$="SAVE"
  321. 7010 PRINT"   WILL YOU ";ZD$;" A S[146]OUND"
  322. 7020 PRINT"              OR A T[146]UNE?"
  323. 7030 GETZE$:IFZE$=""THEN7030
  324. 7032 IFZE$<"S"ORZE$>"T"THEN RETURN
  325. 7035 INPUT"   WHAT IS THE TITLE";ZT$
  326. 7040 IFZE$="S"ANDZM$="3"THEN7100
  327. 7050 IFZE$="S"ANDZM$="4"THEN7200
  328. 7060 IFZE$="T"ANDZM$="3"THEN7300
  329. 7070 IFZE$="T"ANDZM$="4"THEN7400
  330. 7100 OPEN2,8,2,"0:"+ZT$+",S,W"
  331. 7110 PRINT#2,CC:PRINT#2,F:PRINT#2,M:PRINT#2,OC:PRINT#2,Q:PRINT#2,T:PRINT#2,T1:PRINT#2,T2:PRINT#2,VV:PRINT#2,IC:PRINT#2,ID
  332. 7120 FORTT=0TO30:PRINT#2,V(TT):NEXTTT
  333. 7130 CLOSE2
  334. 7140 RETURN
  335. 7200 OPEN2,8,2,"0:"+ZT$+",S,R"
  336. 7210 INPUT#2,CC,F,M,OD,Q,T,T1,T2,VV,IC,ID
  337. 7220 FORTT=0TO30:INPUT#2,V(TT):NEXTTT
  338. 7230 CLOSE2
  339. 7240 IFOD>OCTHENZM$="[133]":PRINT"[147]":GOSUB620:GOTO7240
  340. 7250 IFOD<OCTHENZM$="[134]":PRINT"[147]":GOSUB620:GOTO7250
  341. 7260 RETURN
  342. 7300 OPEN2,8,2,"0:"+ZT$+",S,W"
  343. 7310 PRINT#2,RE
  344. 7320 FORTT=1TO599:PRINT#2,A(TT):PRINT#2,T(TT):PRINT#2,U(TT)
  345. 7330 IFT(TT)=0THENTT=600
  346. 7340 NEXTTT
  347. 7350 CLOSE2
  348. 7360 RETURN
  349. 7400 OPEN2,8,2,"0:"+ZT$+",S,R"
  350. 7410 INPUT#2,RE
  351. 7420 FORTT=1TO599:INPUT#2,A(TT),T(TT),U(TT)
  352. 7430 IFT(TT)=0THENTT=600
  353. 7440 NEXTTT
  354. 7450 CLOSE2
  355. 7460 RETURN
  356. 7500 DATA16,3,76,139,227,142,13,3,169,232,133,20,169,3,133,21,162,250
  357. 7510 DATA154,169,167,72,169,233,72,76,163,168
  358. 7600 REM HELP SCREENS
  359. 7610 PRINT"[147][146]                                        ";
  360. 7620 PRINT"    'MUSICPLEX' IS A MUSIC SYNTHESIZING,";
  361. 7630 PRINT" COMPOSING, PERFORMING, AND RECORDING   ";
  362. 7640 PRINT" TOOL.                                  ";
  363. 7650 PRINT"                                        ";
  364. 7660 PRINT" ALL THREE OF THE SOUND CHIP'S VOICES   ";
  365. 7670 PRINT" MAY  BE  COMBINED  TO  CREATE  COMPLEX ";
  366. 7680 PRINT" OUTPUTS. A MELODY LINE CAN BE RECORDED,";
  367. 7690 PRINT" EDITED, RE-PERFORMED FROM STORED NOTES,";
  368. 7700 PRINT" AND PLAYED BACK AT VARIOUS TEMPOS AND  ";
  369. 7710 PRINT" WITH DIFFERENT VOICES.                 ";
  370. 7720 PRINT"                                        ";
  371. 7730 PRINT" BEFORE THE PROGRAM CAN BE USED, A VOICE";
  372. 7740 PRINT" MUST BE CREATED (ITEMS 1 AND 2 ON THE  ";
  373. 7750 PRINT" MENU TAKE YOU TO THE SCREENS FOR CREA- ";
  374. 7760 PRINT" TING VOICES) OR LOADED FROM DISK (ITEM ";
  375. 7770 PRINT" 4 ON THE MENU).                        ";
  376. 7780 PRINT"                                        ";
  377. 7790 PRINT" ITEM 5 ENTERS THE ACTIVE MODE, SELECTED";
  378. 7800 PRINT" FROM THE STATUS SCREEN.                ";
  379. 7810 FORDY=1TO10:NEXT:PRINT"[147][146]                                        ";
  380. 7820 PRINT" IN COMPOSE MODE, A TUNE MAY BE PLAYED  ";
  381. 7830 PRINT" USING THE TOP TWO ROWS OF KEYS AS YOUR ";
  382. 7840 PRINT" KEYBOARD. NOTES PLAYED ARE STORED FOR  ";
  383. 7850 PRINT" LATER MANIPULATION. PUSHING 'DELETE'   ";
  384. 7860 PRINT" FOLLOWING A BAD NOTE ERASES IT FROM    ";
  385. 7870 PRINT" MEMORY.                                ";
  386. 7880 PRINT"                                        ";
  387. 7890 PRINT" IN PERFORM MODE, STORED NOTES MAY BE   ";
  388. 7900 PRINT" PLAYED BACK, ONE AT A TIME, BY PUSHING ";
  389. 7910 PRINT" ANY KEY OR JOYSTICK. YOUR PERFORMANCE  ";
  390. 7920 PRINT" IS STORED FOR LATER PLAYBACK.          ";
  391. 7930 PRINT"                                        ";
  392. 7940 PRINT" IN PLAYBACK MODE, YOUR TUNE, OR ONE    ";
  393. 7950 PRINT" LOADED FROM DISK (ITEM 4 ON THE MENU)  ";
  394. 7960 PRINT" WILL BE REPLAYED AT THE TEMPO SELECTED ";
  395. 7970 PRINT" ON THE STATUS SCREEN.                  ";
  396. 7980 PRINT"                                        ";
  397. 7990 PRINT" ITEM 3 ON THE MENU WILL SAVE SOUNDS OR ";
  398. 8000 PRINT" TUNES YOU HAVE CREATED TO DISK.":FORDY=1TO30:NEXT:PRINT"[147]":RETURN
  399. 8010 PRINT"[147][146]                                        ";
  400. 8020 PRINT" CONTROLS ON THE LEFT SIDE OF THE SCREEN";
  401. 8030 PRINT" SET THE ADSR AND PULSE WIDTHS OF VOICES";
  402. 8040 PRINT" ONE AND TWO. ADSR REFERS TO THE PARA-  ";
  403. 8050 PRINT" METERS OF THE ENVELOPES (THEY CONTROL  ";
  404. 8060 PRINT" THE AMPLITUDE OF THE WAVEFORMS OVER    ";
  405. 8070 PRINT" TIME).                                 ";
  406. 8080 PRINT"                                        ";
  407. 8090 PRINT"         nm_cDECAY TIME                 ";
  408. 8100 PRINT"        n  [183][183][183][183]m                        ";
  409. 8110 PRINT"       n     ^  m _cRELEASE TIME        ";
  410. 8120 PRINT"       ^     b                          ";
  411. 8130 PRINT"       b     SUSTAIN LEVEL              ";
  412. 8140 PRINT"       b                                ";
  413. 8150 PRINT"       ATTACK TIME                      ";
  414. 8160 PRINT"                                        ";
  415. 8170 PRINT" ENVELOPES FOR BOTH VOICES CAN DIFFER   ";
  416. 8180 PRINT" AND OVERLAP FOR INTERESTING EFFECTS.   ";
  417. 8190 PRINT"                                        ";
  418. 8200 PRINT" PULSE WIDTH SETTINGS  [186][186][186][186][186][186][186][186][175] LOW    ";
  419. 8210 PRINT" AFFECT THE SYMMETRY                    ";
  420. 8220 PRINT" OF  THAT  WAVEFORM    [186]p[186]p[186]p[186]p[175] MEDIUM ";
  421. 8230 PRINT" WHEN  SELECTED  FROM                   ";
  422. 8240 PRINT" THE  STATUS  SCREEN.  [186][183][183]p[186][183][183]p[175] HIGH   ";
  423. 8250 FORDY=1TO35:NEXT:PRINT"                                     [147] ";:POKE198,0:RETURN
  424. 8260 PRINT"[147][146]                                        ";
  425. 8270 PRINT" CONTROLS ON THE RIGHT SIDE OF THE      ";
  426. 8280 PRINT" SCREEN ARE FOR VARIOUS SPECIAL EFFECTS.";
  427. 8290 PRINT" PHASING AND DISSONANCE SET SMALL AND   ";
  428. 8300 PRINT" LARGE FREQUENCY DIFFERENCES, RESPECT-  ";
  429. 8310 PRINT" IVELY, BETWEEN VOICES ONE AND TWO.     ";
  430. 8320 PRINT"                                        ";
  431. 8330 PRINT" SPFX ADSR AND FREQUENCY CONTROLS ARE   ";
  432. 8340 PRINT" FOR VOICE THREE, WHICH CAN BE SELECTED ";
  433. 8350 PRINT" TO MODULATE VOICES ONE AND TWO OR THE  ";
  434. 8360 PRINT" FILTER FROM THE STATUS SCREEN.         ";
  435. 8370 PRINT"                                        ";
  436. 8380 PRINT" THE CUTOFF FREQUENCY OF THE FILTER, AND";
  437. 8390 PRINT" ITS RESONANCE (THE SHARPNESS OF THE    ";
  438. 8400 PRINT" ROLLOFF OF REJECTED FREQUENCIES) MAY   ";
  439. 8410 PRINT" BE SET FOR THOSE VOICES ROUTED THROUGH ";
  440. 8420 PRINT" THE FILTER.                            ";
  441. 8440 PRINT" FILTER MODULATION DIRECTION SETS THE   ";
  442. 8450 PRINT" DIRECTION OF THE FREQUENCY SWEEP WHEN  ";
  443. 8460 PRINT" FILTER MODULATION HAS BEEN SET FROM THE";
  444. 8470 PRINT" STATUS SCREEN.                         ";
  445. 8480 PRINT"                                        ";
  446. 8490 PRINT" SOME COMBINATIONS OF CONTROL SETTINGS  ";
  447. 8500 PRINT" MAY CREATE AN ERROR CONDITION, SENDING ";
  448. 8510 PRINT" YOU TO THE MAIN MENU.";:FORDY=1TO40:NEXT:PRINT"[147]":P$=PL$:POKE198,0:RETURN
  449. 8520 PRINT"[147][146]                                        ";
  450. 8530 PRINT" WAVEFORMS, MODES, OCTAVES, AND SPECIAL ";
  451. 8540 PRINT" EFFECTS CAN BE SET FROM THIS SCREEN.   ";
  452. 8550 PRINT"                                        ";
  453. 8560 PRINT" PLAYBACK RATE IS EFFECTIVE IN PLAYBACK ";
  454. 8570 PRINT" MODE ONLY.                             ";
  455. 8580 PRINT"                                        ";
  456. 8590 PRINT" WHEN VIBRATO AND FILTER MODULATION ARE ";
  457. 8600 PRINT" BOTH SET, ONLY ONE MODULATION WAVEFORM ";
  458. 8610 PRINT" MAY BE USED, UNLESS ONE IS CONTROLLED  ";
  459. 8620 PRINT" BY THE ENVELOPE OF THE SPFX VOICE.     ";
  460. 8630 PRINT"                                        ";
  461. 8640 PRINT" THE VOICE SELECTOR DISPLAYS THE WAVE-  ";
  462. 8650 PRINT" FORM BY ITS SHAPE. RINGMOD AND SYNC ARE";
  463. 8660 PRINT" SPECIAL EFFECTS THAT LINK VOICES TO-   ";
  464. 8670 PRINT" GETHER TO MAKE UNUSUAL SOUNDS. THE     ";
  465. 8680 PRINT" ARROW INDICATES IF THE VOICE IS ROUTED ";
  466. 8690 PRINT" THROUGH THE FILTER.                    ";
  467. 8700 PRINT"                                        ";
  468. 8710 PRINT" SPFX LOOP IS A DELAY LOOP THAT DETER-  ";
  469. 8720 PRINT" MINES THE LENGTH OF THE SUSTAIN PHASE  ";
  470. 8730 PRINT" OF THE SPFX VOICE'S ENVELOPE.          ";
  471. 8740 PRINT"                                        ";
  472. 8750 PRINT" CHANGING OCTAVES TAKES A FEW SECONDS.  ";
  473. 8760 FORDY=1TO40:NEXT:PRINT"[147]":POKE198,0:RETURN
  474.